[Update] วิธีการใช้งาน Google Analytics (GA4) สำหรับ Data Source ของ CData Sync
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้จะมาแนะนำการตั้งค่าและใช้งาน CData Google Analytics (GA4) โดยดึงข้อมูลจจาก Google Analytics (GA4) ไปยัง RDS (MySQL) ครับ
สิ่งที่ต้องมี
※เชื่อมต่อ CData Sync กับ RDS แล้ว
ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้
เมื่อเชื่อมต่อ CData Sync กับ RDS แล้ว ก็จะแสดงหน้าจอแบบนี้ในเว็บเบราว์เซอร์ที่เราใช้งาน
※หมายเหตุ : ควรอ่านข้อมูลในหัวข้อ สิ่งที่ต้องมี อย่างละเอียด รวมถึงบทความอื่นๆ ที่เกี่ยวข้อง เพื่อไม่ให้เกิดความผิดพลาดระหว่างการดำเนินการครับ
เพิ่ม Google Analytics ลงใน CData Sync
เลือก Connections
จากเมนูด้านซ้าย และคลิก + Add Connection
ป้อน Google Analytics
ในช่องค้นหา แล้วปิดใช้งาน Only Installed
(หากเปิดใช้งานอยู่) ก็จะแสดง Google Analytics
ขึ้นมา
จากนั้นคลิกไอคอนดาวน์โหลด (Install Connector) แล้วเลือก Download Connector
แล้วรอ Installing...
สักครู่
เมื่อติดตั้งเสร็จแล้ว คลิก Google Analytics
ย้ายมาที่หน้าจอ Google Analytics ของเรา แล้วคลิก ⚙ Admin
ด้านล่างซ้าย และเลือก Property details
กลับมาที่หน้าจอ New Connection ใน CData Sync ของเรา แล้วจะตั้งค่าในแท็บ Settings ตามนี้
Basic
* Indicates required.
・Connection Name *: GoogleAnalyticsGA4
(ป้อนตามต้องการ)
・Auth Scheme *: OAuth
・Schema *: GoogleAnalytics4
・Property Id: *********
(ป้อน PROPERTY ID ที่คัดลอกจากขั้นตอนที่แล้ว)
・คลิก Connect to Google Analytics
※หมายเหตุ: หากเกิด Error "`The OAuthJWTCertType value 'GOOGLEJSONBLJOB' is invalid.`" ให้ดูวิธีแก้ไขที่ลิงก์บทความด้านล่างนี้
การ Update Connector สำหรับ Google Analytics ใน CData Sync เพื่อแก้ไข Error "The OAuthJWTCertType value 'GOOGLEJSONBLJOB' is invalid."
เลือก Email ที่ต้องการใช้เชื่อมต่อ
แล้วจะกลับมาหน้าจอ New Connection ของ CData GoogleAnalytics นี้โดยอัตโนมัติ
ต่อไปคลิก Save & Test
แล้วจะแสดงคำว่า "Connected" เพียงเท่านี้ก็ถือว่าเราเพิ่มการเชื่อมต่อ CData GoogleAnalytics เรียบร้อยแล้ว และภายใน Google Analytics จะแสดงหน้าจอแบบนี้
ต่อไปเลือก Connections
จากแท็บด้านซ้าย จะเห็นว่าการเชื่อมต่อ Google Sheet นี้ถูกบันทึกใน Connection นี้เรียบร้อยแล้วครับ
เพิ่ม Job สำหรับ Google Analytics และ RDS
การเพิ่ม Job ใน CData Sync เป็นการสร้างงานซิงโครไนซ์เพื่อทำการโอนย้ายข้อมูลระหว่างแหล่งข้อมูลต้นทางและปลายทางตามที่เรากำหนด โดยครั้งนี้จะกำหนดต้นทางเป็น Google Analytics
และปลายทางเป็น RDS (MySQL)
เลือก Jobs
จากแท็บด้านซ้าย แล้วคลิก + Add Job
แล้วจะตั้งค่าตามนี้
* Indicates required
・Name *: GoogleAnalyticsGA4_to_rds
(ป้อนชื่อตามต้องการ)
・Source *: GoogleAnalyticsGA4
(เลือกต้นทางเป็น Google Analytics)
・Destination *: tinnakorn_cdata_rds
(เลือกปลายทางเป็น RDS)
・Type: Standard
・คลิก Add Job
เมื่อเพิ่ม Job เสร็จแล้วจะแสดงหน้าจอแบบนี้
เพิ่ม Task Acquisitions ใน Job
ต่อไปมาสร้าง Task สำหรับ Acquisitions เพื่อดึงข้อมูลจาก Google Analytics ไปยัง RDS โดยรับข้อมูลการเข้าใช้งานในทุกๆ วันทั้งเว็บไซต์หรือเฉพาะข้อมูลที่ต้องการจาก Google Analytics ได้
ข้อมูลที่จะดึงจาก Google Analytics ไปยัง RDS คือ
- Table
- Acquisitions
- Column
- Date
- NewUsers
- Sessions
- TotalUsers
*เมื่อเพิ่ม Task และ Run Job ไปแล้ว ข้อมูลจะถูกเขียนใน RDS โดยมีชื่อ Table ตามชื่อ Task เช่น Table:
Acquisitions
เลือกแท็บ Task
แล้วคลิก + Add Tasks
ค้นหา Acquisitions
แล้วติ๊ก ✅
Acquisitions และคลิก Add Tasks
เมื่อเพิ่ม Task เสร็จแล้วจะแสดงหน้าจอแบบนี้ แล้วคลิก Acquisitions
เลือกแท็บ Columns
แล้วคลิก Edit Mapping
แล้วติ๊ก ✅
ในคอลัมน์ MAP ออกทั้งหมด ยกเว้น 「Date, NewUsers, Sessions, TotalUsers
」 ไม่ต้องติ๊กออก แล้วคลิก Save Mapping
เมื่ออัปเดต Mapping เสร็จแล้ว จะเห็นแค่รายการที่ยกเว้นตามด้านล่างนี้
・Date
・NewUsers
・Sessions
・TotalUsers
นอกจากนี้ยังสามารถตรวจสอบรายการที่ยกเว้นโดยเลือกแท็บ Query
แล้วดูที่ Table Query
ได้ด้วย
Run Job (Acquisitions)
ย้ายกลับมาหน้าจอ Job ของเราโดยคลิกลิงก์ชื่อ Job ด้านบนซ้ายสุด แล้วเลือกแท็บ Task
แล้วติ๊ก Task ✅ Acquisitions
ที่เพิ่มเข้ามา แล้วคลิก Run
เพื่อให้ข้อมูลอัปเดตไปยัง RDS แล้วรอสักครู่
เมื่อ Run เสร็จแล้ว จะแสดง Successful
ใน LAST RUN แบบนี้
ตรวจสอบข้อมูล Database ใน RDS (Acquisitions)
ต่อไปจะตรวจสอบข้อมูล Database ใน RDS ที่ใช้เป็นแหล่งข้อมูลปลายทาง ว่าหลังจากที่ Run Job ใน CData Sync ไปแล้ว จะมีข้อมูลของ Google Analytics เข้ามาใน RDS หรือไม่
เข้ามาที่หน้าจอ Terminal ที่ Login Server EC2 Instance ไว้ แล้วเชื่อมต่อเข้าไปยัง Database ใน RDS ผ่าน Server EC2 Instance ด้วยคำสั่งด้านล่างนี้ (ดูข้อมูลเพิ่มเติมได้ที่วิธีเชื่อมต่อไปยัง RDS (MySQL) ใน Ubuntu)
mariadb -h [RDS Endpoint] -u [Master username RDS] -p[Master password RDS]
ต่อไปรันคำสั่งเรียกดูรายการ Database ที่มีอยู่
SHOW databases;
root@ip-xx-xx-xx-xx:~
MySQL [(none)]> SHOW databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| tinnakorn |
+--------------------+
5 rows in set (0.006 sec)
MySQL [(none)]>
ต่อไปรันคำสั่งเรียกใช้ Database ที่ใช้เป็นแหล่งข้อมูลปลายทางเพื่อรับข้อมูลจากการ Run Job ใน CData Sync เช่น tinnakorn
(เรียกใช้ Database ของคุณ)
USE [your_db_name];
root@ip-xx-xx-xx-xx:~
MySQL [(none)]> USE tinnakorn;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [tinnakorn]>
ต่อไปรันคำสั่งตรวจสอบ Table
SHOW tables;
root@ip-xx-xx-xx-xx:~
MySQL [tinnakorn]> SHOW tables;
+---------------------+
| Tables_in_tinnakorn |
+---------------------+
| Acquisitions |
+---------------------+
1 row in set (0.002 sec)
MySQL [tinnakorn]>
ต่อไปรันคำสั่งเรียกดูข้อมูลที่เราเพิ่มเข้ามาใน Database ด้วยการ Run Job ไปก่อนหน้า
SELECT * FROM Acquisitions ORDER BY Date ASC;
root@ip-xx-xx-xx-xx:~
MySQL [tinnakorn]> SELECT * FROM Acquisitions ORDER BY Date ASC;
+------------+----------+----------+------------+
| Date | NewUsers | Sessions | TotalUsers |
+------------+----------+----------+------------+
| 2023-11-27 | 9 | 25 | 15 |
| 2023-11-28 | 10 | 32 | 19 |
| 2023-11-29 | 12 | 24 | 19 |
| 2023-11-30 | 9 | 22 | 18 |
| 2023-12-01 | 10 | 20 | 16 |
| 2023-12-02 | 10 | 11 | 11 |
| 2023-12-03 | 11 | 14 | 13 |
| 2023-12-04 | 10 | 27 | 17 |
| 2023-12-05 | 85 | 88 | 88 |
| 2023-12-06 | 25 | 39 | 35 |
| 2023-12-07 | 21 | 38 | 32 |
| 2023-12-08 | 13 | 24 | 19 |
| 2023-12-09 | 7 | 9 | 8 |
| 2023-12-10 | 4 | 4 | 4 |
| 2023-12-11 | 16 | 28 | 22 |
| 2023-12-12 | 9 | 23 | 18 |
| 2023-12-13 | 17 | 30 | 23 |
| 2023-12-14 | 8 | 17 | 12 |
| 2023-12-15 | 14 | 26 | 20 |
| 2023-12-16 | 8 | 8 | 8 |
| 2023-12-17 | 5 | 7 | 6 |
| 2023-12-18 | 11 | 22 | 17 |
| 2023-12-19 | 7 | 25 | 17 |
| 2023-12-20 | 6 | 15 | 10 |
| 2023-12-21 | 7 | 17 | 12 |
| 2023-12-22 | 4 | 21 | 15 |
| 2023-12-23 | 2 | 3 | 3 |
| 2023-12-24 | 3 | 3 | 3 |
| 2023-12-25 | 11 | 18 | 15 |
| 2023-12-26 | 15 | 20 | 19 |
| 2023-12-27 | 2 | 2 | 2 |
+------------+----------+----------+------------+
31 rows in set (0.001 sec)
MySQL [tinnakorn]>
ทีนี้ลองมาดูในส่วนของ Acquisitions ใน Google Analytics (GA4) ก็สามารถตรวจสอบได้โดยเลือก 「Reports
» Life cycle
» Acquisition
» Overview
」 นอกจากนี้ยังสามารถเลือกวันที่ด้านขวาบนและตรวจสอบข้อมูลการเข้าใช้งานเว็บไซต์ได้เลยครับ
เพิ่ม Task Engagement ใน Job
ต่อไปมาสร้าง Task สำหรับ Engagement เพื่อดึงข้อมูลจาก Google Analytics ไปยัง RDS โดยรับข้อมูลการเข้าใช้งานในทุกๆ วันทั้งเว็บไซต์หรือเฉพาะข้อมูลที่ต้องการจาก Google Analytics ได้
ข้อมูลที่จะดึงจาก Google Analytics ไปยัง RDS คือ
- Table
- Engagement
- Column
- Date
- ScreenPageViews
- UnifiedPageScreen
*เมื่อเพิ่ม Task และ Run Job ไปแล้ว ข้อมูลจะถูกเขียนใน RDS โดยมีชื่อ Table ตามชื่อ Task เช่น Table:
Engagement
คลิก + Add Tasks
ค้นหา Engagement
แล้วติ๊ก ✅
Engagement และคลิก Add Tasks
เลือกแท็บ Columns
แล้วคลิก Edit Mapping
แล้วติ๊ก ✅
ในคอลัมน์ MAP ออกทั้งหมด ยกเว้น 「Date, ScreenPageViews, UnifiedPageScreen
」 ไม่ต้องติ๊กออก แล้วคลิก Save Mapping
เมื่ออัปเดต Mapping เสร็จแล้ว จะเห็นแค่รายการที่ยกเว้นตามด้านล่างนี้
・Date
・ScreenPageViews
・UnifiedPageScreen
แล้วตรวจสอบรายการที่ยกเว้นโดยเลือกแท็บ Query
แล้วดูที่ Table Query
Run Job (Engagement)
ย้ายกลับมาหน้าจอ Job ของเราโดยคลิกลิงก์ชื่อ Job ด้านบนซ้ายสุด แล้วเลือกแท็บ Task
แล้วติ๊ก Task ✅ Engagement
ที่เพิ่มเข้ามา แล้วคลิก Run
เพื่อให้ข้อมูลอัปเดตไปยัง RDS แล้วรอสักครู่
เมื่อ Run เสร็จแล้ว จะแสดง Successful
ใน LAST RUN แบบนี้
ตรวจสอบข้อมูล Database ใน RDS (Engagement)
กลับมาที่หน้าจอ Terminal แล้วตรวจสอบข้อมูล Database ใน RDS ที่ใช้เป็นแหล่งข้อมูลปลายทาง ว่าหลังจากที่ Run Job ใน CData Sync ไปแล้ว จะมีข้อมูลของ Google Analytics เข้ามาใน RDS หรือไม่
รันคำสั่งตรวจสอบ Table
SHOW tables;
root@ip-xx-xx-xx-xx:~
MySQL [tinnakorn]> SHOW tables;
+---------------------+
| Tables_in_tinnakorn |
+---------------------+
| Acquisitions |
| Engagement |
+---------------------+
2 rows in set (0.004 sec)
MySQL [tinnakorn]>
ต่อไปรันคำสั่งเรียกดูข้อมูลที่เราเพิ่มเข้ามาใน Database ด้วยการ Run Job ไปก่อนหน้า โดยกำหนดวันที่ที่ต้องการตรวจสอบ
SELECT * FROM Engagement WHERE Date = '2023-12-27';
root@ip-xx-xx-xx-xx:~
MySQL [tinnakorn]> SELECT * FROM Engagement WHERE Date = '2023-12-27';
+------------+-----------------+-------------------------------------------------------------------------------------------------------------------+
| Date | ScreenPageViews | UnifiedPageScreen |
+------------+-----------------+-------------------------------------------------------------------------------------------------------------------+
| 2023-12-27 | 2 | /th/info-20240109-webinar-ec2backup-th?p=fb1&fbclid=IwAR2UqlNnzWIUgEd_72GwfOlaHJPkLDDbMhxayxwDG12gETEaz3ZTUgxWZuE |
| 2023-12-27 | 2 | /th/info-20240109-webinar-ec2backup-th?p=fb1&fbclid=IwAR31NVE7ey9bsJJm0o9jhfdEMuWGNTLZaD7LeDvYOJFI4-Wfm10AWKTsZdg |
+------------+-----------------+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.001 sec)
MySQL [tinnakorn]>
ทีนี้ลองมาดูในส่วนของ Engagement ใน Google Analytics (GA4) ก็สามารถตรวจสอบได้โดยเลือก 「Reports
» Life cycle
» Engagement
» Pages and screens
」 นอกจากนี้ยังสามารถเลือกวันที่ด้านขวาบนและตรวจสอบข้อมูลการเข้าใช้งานเว็บไซต์ได้เลยครับ
รับข้อมูลทุกวัน
เมื่อรวบรวมข้อมูลด้วย Google Analytics (GA4) เราสามารถรับข้อมูลได้ทุกวันโดยอัตโนมัติด้วยการใช้งานร่วมกับฟังก์ชัน Schedule ใน CData Sync ครับ
ดูวิธีการได้ที่ด้านล่างนี้ครับ
สรุป
การดึงข้อมูลจาก Google Analytics ไปยัง RDS สามารถดึงข้อมูลทั้งหมดหรือเลือกเฉพาะข้อมูลที่ต้องการเขียนลงใน RDS ได้ตามต้องการโดยแก้ไข Column Mapping ใน Task ที่จะรันไปยัง RDS ครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !